package org.acb.sgp.service.impl;

import java.util.List;
import org.acb.sgp.beans.*;
import org.acb.sgp.controller.*;
import org.acb.sgp.controller.impl.*;
import org.acb.sgp.service.BusinessLayerService;

public class BusinessLayerServiceImpl implements BusinessLayerService {

    private final LocacionController locacionController;
    private final DistritoController distritoController;
    private final CategoriaLocacionController categoriaLocacionController;
    private final ProgramaController programaController;
    private final EstadoController estadoController;
    private final EpisodioController episodioController;
    private final GuionTecnicoController guionTecnicoController;
    private final EscenaController escenaController;
    private final ImagenLocacionController imagenLocacionController;
    private final ActorController actorController;
    private final UtileriaController utileriaController;
    private final ReglaController reglaController;
    private final SeguimientoController seguimientoController;
    private final PresupuestoController presupuestoController;
    private final DetallePresupuestoController detallePresupuestoController;
    private final DetalleItemController detalleItemController;

    public BusinessLayerServiceImpl() {
        locacionController = new LocacionControllerImpl();
        distritoController = new DistritoControllerImpl();
        categoriaLocacionController = new CategoriaLocacionControllerImpl();
        programaController = new ProgramaControllerImpl();
        estadoController = new EstadoControllerImpl();
        episodioController = new EpisodioControllerImpl();
        guionTecnicoController = new GuionTecnicoControllerImpl();
        escenaController = new EscenaControllerImpl();
        imagenLocacionController = new ImagenLocacionControllerImpl();
        actorController = new ActorControllerImpl();
        utileriaController = new UtileriaControllerImpl();
        reglaController = new ReglaControllerImpl();
        seguimientoController = new SeguimientoControllerImpl();
        presupuestoController = new PresupuestoControllerImpl();
        detallePresupuestoController = new DetallePresupuestoControllerImpl();
        detalleItemController = new DetalleItemControllerImpl();
    }

    @Override
    public void registrarLocacion(Locacion locacion) {
        locacionController.registrarLocacion(locacion);
    }

    @Override
    public void eliminarLocacion(Locacion locacion) {
        locacionController.eliminarLocacion(locacion);
    }

    @Override
    public Locacion buscarLocacionPorLocacionId(Integer locacionId) {
        return locacionController.buscarLocacionPorCodigo(locacionId);
    }

    @Override
    public List<Locacion> buscarLocacionPorNombreCategoria(String nombre, Integer categoriaId) {
        return locacionController.buscarLocacionPorNombreCategoria(nombre, categoriaId);
    }

    @Override
    public List<Locacion> listaLocaciones() {
        return locacionController.listaLocaciones();
    }

    @Override
    public void registrarDistrito(Distrito distrito) {
        distritoController.registrarDistrito(distrito);
    }

    @Override
    public void eliminarDistrito(Distrito distrito) {
        distritoController.eliminarDistrito(distrito);
    }

    @Override
    public Distrito buscarDistritoPorDistritoId(Integer codDistrito) {
        return distritoController.buscarDistritoPorCodigo(codDistrito);
    }

    @Override
    public List<Distrito> listaDistritos() {
        return distritoController.listaDistritos();
    }

    @Override
    public void registrarCategoria(CategoriaLocacion categoria) {
        categoriaLocacionController.registrarCategoria(categoria);
    }

    @Override
    public void eliminarCategoria(CategoriaLocacion categoria) {
        categoriaLocacionController.eliminarCategoria(categoria);
    }

    @Override
    public CategoriaLocacion buscarCategoriaPorCategoriaId(Integer codCategoria) {
        return categoriaLocacionController.buscarCategoriaPorCodigo(codCategoria);
    }

    @Override
    public List<CategoriaLocacion> listaCategorias() {
        return categoriaLocacionController.listaCategorias();
    }

    @Override
    public void registrarPrograma(Programa programa) {
        programaController.registrarPrograma(programa);
    }

    @Override
    public void eliminarPrograma(Programa programa) {
        programaController.eliminarPrograma(programa);
    }

    @Override
    public Programa buscarProgramaPorCodigo(Integer codPrograma) {
        return programaController.buscarProgramaPorCodigo(codPrograma);
    }

    @Override
    public List<Programa> listaProgramas() {
        return programaController.listaProgramas();
    }

    @Override
    public void registrarEstado(Estado estado) {
        estadoController.registrarEstado(estado);
    }

    @Override
    public void eliminarEstado(Estado estado) {
        estadoController.eliminarEstado(estado);
    }

    @Override
    public Estado buscarEstadoPorCodigo(Integer codEstado) {
        return estadoController.buscarEstadoPorCodigo(codEstado);
    }

    @Override
    public List<Estado> listaEstados() {
        return estadoController.listaEstados();
    }

    @Override
    public void registrarEpisodio(Episodio episodio) {
        episodioController.registrarEpisodio(episodio);
    }

    @Override
    public void eliminarEpisodio(Episodio espisodio) {
        episodioController.eliminarEpisodio(espisodio);
    }

    @Override
    public Episodio buscarEpisodioPorCodigo(Integer codEpisodio) {
        return episodioController.buscarEpisodioPorCodigo(codEpisodio);
    }

    @Override
    public List<Episodio> listaEpisodios() {
        return episodioController.listaEpisodios();
    }

    @Override
    public List<Episodio> buscarEpisodiosPorCodPrograma(Integer codPrograma) {
        return episodioController.buscarEpisodiosPorCodPrograma(codPrograma);
    }

    @Override
    public void registrarGuionTecnico(GuionTecnico guionTecnico) {
        guionTecnicoController.registrarGuionTecnico(guionTecnico);
    }

    @Override
    public void eliminarGuionTecnico(GuionTecnico guionTecnico) {
        guionTecnicoController.eliminarGuionTecnico(guionTecnico);
    }

    @Override
    public GuionTecnico buscarGuionTecnicoPorEpisodioPrograma(Integer codEpisodio, Integer codPrograma) {
        return guionTecnicoController.buscarGuionTecnicoPorEpisodioPrograma(codEpisodio, codPrograma);
    }

    @Override
    public void registrarEscena(Escena escena) {
        escenaController.registrarEscena(escena);
    }

    @Override
    public void eliminarEscena(Escena escena) {
        escenaController.eliminarEscena(escena);
    }

    @Override
    public Escena buscarEscenaPorCodigo(Integer codEscena) {
        return escenaController.buscarEscenaPorCodigo(codEscena);
    }

    @Override
    public List<Escena> buscarEscenasPorEpisodioPrograma(Integer codEpisodio, Integer codPrograma) {
        return escenaController.buscarEscenasPorEpisodioPrograma(codEpisodio, codPrograma);
    }

    @Override
    public void registrarImagen(ImagenLocacion imagen) {
        imagenLocacionController.registrarImagen(imagen);
    }

    @Override
    public void eliminarImagen(ImagenLocacion imagen) {
        imagenLocacionController.eliminarImagen(imagen);
    }

    @Override
    public void eliminarImagenesPorCodLocacion(Integer codLocacion) {
        imagenLocacionController.eliminarImagenesPorCodLocacion(codLocacion);
    }

    @Override
    public List<ImagenLocacion> listaImagenes() {
        return imagenLocacionController.listaImagenes();
    }

    @Override
    public List<ImagenLocacion> listaImagenesPorCodLocacion(Integer codLocacion) {
        return imagenLocacionController.listaImagenesPorCodLocacion(codLocacion);
    }

    @Override
    public void registrarActor(Actor actor) {
        actorController.registrarActor(actor);
    }

    @Override
    public void eliminarActor(Actor actor) {
        actorController.eliminarActor(actor);
    }

    @Override
    public List<Actor> buscarActoresPorCodEscena(Integer codEscena) {
        return actorController.buscarActoresPorCodEscena(codEscena);
    }

    @Override
    public List<Actor> listaActores() {
        return actorController.listaActores();
    }

    @Override
    public List<Utileria> buscarUtileriasPorCodEscena(Integer codEscena) {
        return utileriaController.buscarUtileriasPorCodEscena(codEscena);
    }

    @Override
    public List<Regla> buscarReglas(Regla regla) {
        return reglaController.buscarReglas(regla);
    }

    @Override
    public void registrarRegla(Regla regla) {
        reglaController.registrarRegla(regla);
    }

    @Override
    public void eliminarRegla(Regla regla) {
        reglaController.eliminarRegla(regla);
    }

    @Override
    public List<Regla> listarTodasRegla() {
        return reglaController.listarTodasRegla();
    }

    @Override
    public List<String> evaluarRegla(Regla regla) {
        return reglaController.evaluarRegla(regla);
    }

    @Override
    public List<ObjetoEvento> listaObjetoEvento() {
        return seguimientoController.listaObjetoEvento();
    }

    @Override
    public void registrarPresupuesto(Presupuesto presupuesto) {
        presupuestoController.registrarPresupuesto(presupuesto);
    }

    @Override
    public void eliminarPresupuesto(Presupuesto presupuesto) {
        presupuestoController.eliminarPresupuesto(presupuesto);
    }

    @Override
    public Presupuesto buscarPresupuestoPorEpisodio(Integer codEpisodio) {
        return presupuestoController.buscarPresupuestoPorEpisodio(codEpisodio);
    }

    @Override
    public void registrarDetallePresupuesto(DetallePresupuesto detalle) {
        detallePresupuestoController.registrarDetallePresupuesto(detalle);
    }

    @Override
    public void eliminarDetallePresupuesto(DetallePresupuesto detallePresupuesto) {
        detallePresupuestoController.eliminarDetallePresupuesto(detallePresupuesto);
    }

    @Override
    public DetallePresupuesto buscarDetallePresupuestoPorCodigo(Integer codDetalle) {
        return detallePresupuestoController.buscarDetallePresupuestoPorCodigo(codDetalle);
    }

    @Override
    public List<DetallePresupuesto> buscarDetallesPorCodPresupuesto(Integer codPresupuesto) {
        return detallePresupuestoController.buscarDetallesPorCodPresupuesto(codPresupuesto);
    }

    @Override
    public void registrarDetalleItem(DetalleItem item) {
        detalleItemController.registrarDetalleItem(item);
    }

    @Override
    public void eliminarDetalleItem(DetalleItem item) {
        detalleItemController.eliminarDetalleItem(item);
    }

    @Override
    public DetalleItem buscarDetalleItemPorCodigo(Integer codItem) {
        return detalleItemController.buscarDetalleItemPorCodigo(codItem);
    }

    @Override
    public List<DetalleItem> buscarItemsPorCodDetalle(Integer codDetalle) {
        return detalleItemController.buscarItemsPorCodDetalle(codDetalle);
    }

}
